﻿#include "WRFlowedWidget.h"

//初始化控件。
WRFlowedWidget::WRFlowedWidget(QWidget* parent)
    : QWidget(parent),
      m_scroll(new QScrollArea()),
      m_content(new QWidget()),
      m_layout(new WRFlowedLayout())
{
    QRect rect(0, 0, width(), height());

    m_scroll->setParent(this);
    m_scroll->setWidget(m_content);
    m_scroll->setWidgetResizable(true);
    m_scroll->setGeometry(rect);

    m_content->setLayout(m_layout);
    m_content->setGeometry(rect);

    m_layout->setMargin(4);
    m_layout->setSpacing(4);
}

//获取子控件数量。
int WRFlowedWidget::count(void) const
{
    return m_layout->count();
}

//获取指定索引的子控件。
QWidget* WRFlowedWidget::index(int index) const
{
    return m_layout->itemAt(index)->widget();
}

//添加子控件。
void WRFlowedWidget::add(QWidget* widget)
{
    m_layout->addWidget(widget);
    m_layout->invalidate();
}

//插入子控件。
void WRFlowedWidget::insert(int index, QWidget* widget)
{
    m_layout->insertWidget(index, widget);
    m_layout->invalidate();
}
//移除指定索引的子控件。
QWidget* WRFlowedWidget::remove(int index)
{
    QLayoutItem* item = m_layout->takeAt(index);
    if (item)
    {
        QWidget* widget = item->widget();
        delete item;
        m_layout->invalidate();
        return widget;
    }
    return 0;
}

//处理大小改变事件。
void WRFlowedWidget::resizeEvent(QResizeEvent *e)
{
    m_scroll->resize(e->size());
    QWidget::resizeEvent(e);
}
